昨天稍微介紹了一下Rails的主角:Routes 和 MVC,
今天就稍微解釋一下 REST 和 RESTful 吧!
REST的全文是:REpresentational State Transfer,
是由Roy Thomas Fielding博士於2000年所提出的一種軟體架構風格。
通常會透過使用HTTP協議(在技術上也可以使用其他協議)來實現。
REST本身不是協議,它只是一組慣例,遵循這些慣例可以使
不同的Web的應用程序或API之間維持資源(resources)命名的簡單性和一致性。
透過資源命名的簡單性和一致性,讓不同軟體/程式在網路(例如網際網路)
中互相傳遞資訊能更加便利。
符合REST設計架構,並朝這個理念而設計出來的系統,比如說 Ruby on Rails,就可以被稱為是RESTful的系統,表示系統在設計上遵循著 REST 的理念與原則。
在RESTful架構中,標準HTTP方法(Verb)與統一資源標識符(URI)結合使用,
以在客戶端和服務器之間傳遞請求和響應。
每個URI描述一個獨立的操作,並包含滿足請求所需的所有信息(資料)。
還記得昨天的那張圖嗎?沒關係,看下面的表格也可以
Verb | URI | Controller#action |
---|---|---|
GET | /products | products/index |
POST | /products | products/create |
GET | /products/new | products/new |
GET | /products/:id/edit | products/edit |
GET | /products/:id | products/show |
PATCH | /products/:id | products/update |
PUT | /products/:id | products/update |
DELETE | /products/:id | products/destroy |
透過VERB 和 URI 的組合,每個組合要對資料所進行的操作被清楚的區隔開來。
同場加映:
補上自己在查資料時,熊熊看不懂的安全方法和冪等方法,算是幫自己做個紀錄:
safe & idempotent,這兩個是HTTP狀態描述的專有名詞。
「safe」是指該操作不會改變原本的資源狀態,並且同樣的結果是可以被快取(Cache)的。例如: 查看訂單是不會改變訂單本身紀錄。
「idempotent」是指該操作不管做1遍、2遍或多遍,都會得到同樣的資源狀態結果。
GET 是 安全方法同時也是冪等方法
PUT 和 DELETE 是冪等方法
以上,就是現階段,我對REST和RESTful的了解。
鐵人賽,我們明天再見。
參考資料:
什麼是 REST? RESTful?
REST - Wiki
淺談 REST 軟體架構風格
HTTP 請求方法 (Request Method)
HTTP方法的安全性和幂等性